package pe.com.cotelasa.scp.to;

import java.io.Serializable;
import java.math.BigDecimal;
import pe.com.cotelasa.scp.dominio.common.Constantes;

import pe.com.cotelasa.scp.entidad.GuiaRemision.ESTADO_GUIA_REMISION;

@SuppressWarnings("serial")
public class GuiaRemisionTO implements Serializable {

    private Integer id_guia_remision;
    private String nro_guia;
    private String remitente;
    private String motivo;
    private String destinatario;
    private String nro_ordencs;
    private String nro_ordenp;
    private String tipo_guia;
    private String forma;
    private short entregado;
    private char estado;
    private BigDecimal cantidad;
    private String unidad;
    private String num_factura;

    public Integer getId_guia_remision() {
        return id_guia_remision;
    }

    public void setId_guia_remision(Integer id_guia_remision) {
        this.id_guia_remision = id_guia_remision;
    }

    public String getNro_guia() {
        return nro_guia;
    }

    public void setNro_guia(String nro_guia) {
        this.nro_guia = nro_guia;
    }

    public String getDestinatario() {
        return destinatario;
    }

    public void setDestinatario(String destinatario) {
        this.destinatario = destinatario;
    }

    public String getNro_ordencs() {
        return nro_ordencs;
    }

    public void setNro_ordencs(String nro_ordencs) {
        this.nro_ordencs = nro_ordencs;
    }

    public char getEstado() {
        return estado;
    }

    public void setEstado(char estado) {
        this.estado = estado;
    }

    public String getDescEstado() {
        return this.estado == ESTADO_GUIA_REMISION.BORRADOR.getValor()
                ? ESTADO_GUIA_REMISION.BORRADOR.name() : (this.estado == ESTADO_GUIA_REMISION.EMITIDO.getValor()
                ? ESTADO_GUIA_REMISION.EMITIDO.name() : ESTADO_GUIA_REMISION.ANULADO.name());
    }

    public boolean getEmitioEnable() {
        return this.estado == ESTADO_GUIA_REMISION.EMITIDO.getValor();
    }

    public boolean getEntradaEnable() {
        return this.tipo_guia.equalsIgnoreCase(Constantes.TipoMovimiento.SALIDA);
    }

    public boolean getEntregadoEnable() {
        return this.entregado == 1;
    }

    public boolean getAnularEnable() {
        //return this.tipo_guia.equalsIgnoreCase(Constantes.TipoMovimiento.SALIDA) && this.entregado == 0;  
        return this.estado != ESTADO_GUIA_REMISION.ANULADO.getValor() && this.num_factura.equalsIgnoreCase("");
    }

    public String getTipo_guia() {
        return tipo_guia;
    }

    public void setTipo_guia(String tipo_guia) {
        this.tipo_guia = tipo_guia;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime
                * result
                + ((id_guia_remision == null) ? 0 : id_guia_remision.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        GuiaRemisionTO other = (GuiaRemisionTO) obj;
        if (id_guia_remision == null) {
            if (other.id_guia_remision != null) {
                return false;
            }
        } else if (!id_guia_remision.equals(other.id_guia_remision)) {
            return false;
        }
        return true;
    }

    public short getEntregado() {
        return entregado;
    }

    public void setEntregado(short entregado) {
        this.entregado = entregado;
    }

    public String getRemitente() {
        return remitente;
    }

    public void setRemitente(String remitente) {
        this.remitente = remitente;
    }

    public String getMotivo() {
        return motivo;
    }

    public void setMotivo(String motivo) {
        this.motivo = motivo;
    }

    public String getNro_ordenp() {
        return nro_ordenp;
    }

    public void setNro_ordenp(String nro_ordenp) {
        this.nro_ordenp = nro_ordenp;
    }

    /**
     * @return the forma
     */
    public String getForma() {
        return forma;
    }

    /**
     * @param forma the forma to set
     */
    public void setForma(String forma) {
        this.forma = forma;
    }

    public BigDecimal getCantidad() {
        return cantidad;
    }

    public void setCantidad(BigDecimal cantidad) {
        this.cantidad = cantidad;
    }

    public String getUnidad() {
        return unidad;
    }

    public void setUnidad(String unidad) {
        this.unidad = unidad;
    }

    public String getNum_factura() {
        return num_factura;
    }

    public void setNum_factura(String num_factura) {
        this.num_factura = num_factura;
    }
}
